import 'dart:convert';
import 'package:http/http.dart' as http;

class AIService {
  static const String _baseUrl = 'https://api.moonshot.cn/v1/chat/completions';
  static const String _apiKey = 'sk-CvopQsXRGFFNf8IroJmlMlyw7ig7rY9uXX5ClSbqpKJK2dG5'; // 请替换为您的Kimi API密钥

  Future<List<String>> parseNaturalCommand(String naturalCommand, String osType) async {
    final prompt = '''
    你是一个命令行专家，请根据用户的自然语言描述，生成对应操作系统的具体命令。
    
    当前操作系统: $osType
    用户描述: $naturalCommand
    
    要求：
    1. 只返回具体的命令，每行一个命令
    2. 不要包含解释或说明
    3. 确保命令在当前操作系统下可执行
    4. 如果有多条命令，按执行顺序排列
    5. 如果是危险操作，请添加注释警告
    
    返回格式：
    命令1
    命令2
    命令3
    ''';

    try {
      final response = await http.post(
        Uri.parse(_baseUrl),
        headers: {
          'Authorization': 'Bearer $_apiKey',
          'Content-Type': 'application/json',
        },
        body: jsonEncode({
          'model': 'moonshot-v1-8k',
          'messages': [
            {'role': 'user', 'content': prompt}
          ],
          'max_tokens': 200,
          'temperature': 0.1,
          'top_p': 0.8
        }),
      );

      if (response.statusCode == 200) {
        final data = jsonDecode(response.body);
        final content = data['choices'][0]['message']['content'] as String;
        return content.trim().split('\n').where((cmd) => cmd.trim().isNotEmpty).toList();
      } else {
        throw Exception('AI服务调用失败: ${response.statusCode} - ${response.body}');
      }
    } catch (e) {
      throw Exception('AI解析失败: $e');
    }
  }

  Future<String> detectSystemType(String testCommand) async {
    // 根据测试命令检测系统类型
    if (testCommand.contains('uname')) {
      return 'Linux/Unix';
    } else if (testCommand.contains('ver')) {
      return 'Windows';
    } else if (testCommand.contains('sw_vers')) {
      return 'macOS';
    }
    return 'Linux'; // 默认
  }
}